// 控制应用程序寿命并创建本机浏览器窗口的模块
const {app, BrowserWindow, ipcMain, BrowserView} = require('electron')
const path = require('path')

function createWindow() {
    // 创建浏览器窗口。
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            preload: path.join(__dirname, 'preload.js'),
            nodeIntegration: true,
            enableRemoteModule: true,
            webviewTag: true, // 启用webview标签
        },
        show: false, // 此事件显示窗口没有视觉闪烁
    })

    // 并加载应用程序的index.html。
    mainWindow.loadFile('index.html')
    // mainWindow.loadFile(`file://${__dirname}/index.html`)
    // 可以加载网址
    // mainWindow.loadURL("https://www.baidu.com")
    // 打开DevTools。
    mainWindow.webContents.openDevTools()
    console.log('wenjian', `file://${__dirname}/index.html`)
    // 启动进度条
    // mainWindow.setProgressBar(1)
    // 此事件显示窗口没有视觉闪烁
    mainWindow.once('ready-to-show', () => {
        mainWindow.show()
    })

    // 创建和控制视图
    // const view = new BrowserView()
    // mainWindow.setBrowserView(view)
    // view.setBounds({
    //     x: 100, y: 50, width: 900, height: 600
    // })
    // view.setBackgroundColor('red')
    // view.webContents.loadURL('https://www.baidu.com')
    //
    // setTimeout(function () {
    //     view.destroy(); // 关闭页面
    // }, 5000)
}


// 当Electron完成初始化并准备创建浏览器窗口时，将调用此方法。
// 某些API仅在此事件发生后才能使用。

app.whenReady().then(() => {
    createWindow()

    app.on('activate', function () {
        // 在macOS上，通常会在单击停靠图标且没有其他窗口打开时在应用程序中重新创建一个窗口。

        if (BrowserWindow.getAllWindows().length === 0) {
            createWindow()
        }
    })

})

// 关闭所有窗口时退出，但在macOS上除外。
// 在那里，在用户使用Cmd + Q明确退出之前，应用程序及其菜单栏保持活动状态是很常见的。

app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') {
        app.quit()
    }
})

// 在此文件中，您可以包括应用程序其他特定的主要过程代码。
// 您也可以将它们放在单独的文件中，并在此处要求它们。
console.log('platform:', process.platform)

// 注册拖拽
ipcMain.on('ondragstart', (event, filePath) => {
    console.log('ondragstart')
    event.sender.startDrag({
        file: filePath,
        icon: '/path/to/icon.png'
    })
})
